#ifndef __PAGEBASE_H__
#define __PAGEBASE_H__

#include "json.h"

#include <string>

class PageBase {
public:
    
    PageBase();

    virtual ~PageBase() {}
    
    //NOTE 构造函数要完成各种模块的初始化
    PageBase(const Json::Value& pageConfig = Json::nullValue);

    //NOTE 信号处理函数，要在子类构造函数中将子类的MsgProc函数注册到消息总线中订阅GUI的消息,入参待定...
    virtual void MsgProc() = 0;

    //NOTE 页面状态的变更接口函数必须由子类实现,入参待定...
    virtual void UpData() = 0;
protected:
//获取到当前页面在json中的名称
    std::string GetPageName();
};

typedef void (PageBase::*MsgProc)();

class MsgBus {
public:
    MsgBus();

    //NOTE 启动线程传递消息
    void ThreadProc();

    ~MsgBus();
};

#endif
